äÓñ{ÉRÉ}ÉìÉhDZDZÇ≈ÇÕïpî…Ç…égópÇ∑ÇÈÉRÉ}ÉìÉhDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB(DZDZÇ≈è–âÓǵǻǢÉRÉ}ÉìÉhÇÕëÂîºÇ™ì‡ïîÉfÅ[É^ç\ë¢ÇéQèΔÇ∑ÇÈÇΩÇflÇÃÉRÉ}ÉìÉhÇ≈ÅAMRJ é©ëÃÇÉfÉoÉbÉOÇ∑ÇÈÇΩÇflÇÃLJÇÃÇ≈Ç∑ÅB) DZÇà Java ÉçÉO (
|
il java/lang/Thread.join.()V disassembly from $659ed84 java.lang.Thread.join(Thread.java:873) disassembly from $659ed84 java.lang.Thread.join(Thread.java:873) [0] 2A aload_0 [1] 9 lconst_0 [2] E2 invokevirtual_quick_w Method: "java/lang/Thread.join(J)V" [5] B1 return |
MRJ ÇÃÉfÉoÉbÉOÉrÉãÉhÇégǧÇΔÅAMRJ dcmd
ÇÃÇ§ÇøÅAóòópâ¬î\Ç»ÉRÉ}ÉìÉhÇ™ëùǶNjÇ∑ÅB(í èÌÇÃÉrÉãÉhÇ≈ÇÕDZÇÍÇÁÇÃÉRÉ}ÉìÉhÇÕÉTÉ|Å[ÉgÇ≥ÇÍÇ‹ÇπÇÒÅBMRJ Ç™íxÇ≠ǻǡÇΩÇËÅAÉÅÉÇÉäÇëΩÇ≠égópǵÇΩÇËÅAǪÇÃóºï˚ÇÃDZÇΔÇ™ãNDZÇËǧÇÈÇΩÇflÇ≈Ç∑ÅB)
ÉfÉoÉbÉOÉrÉãÉhÇÃèÍçáÅAå¿íËìIǻLJÇÃÇ≈Ç∑Ç™ÅAÉXÉåÉbÉhÉXÉPÉWÉÖÅ[ÉâÇ…ÉfÉbÉhÉçÉbÉNÉ`ÉFÉbÉNã@î\Ç™ëgÇ›çûÇ‹ÇÍǃǢNjÇ∑ÅBè]óàå^Çà 2 ÉXÉåÉbÉhÇ…ÇÊÇÈÉfÉbÉhÉçÉbÉNÇ™åüèoÇ≥ÇÍÇÈÇΔÅAÉfÉbÉhÉçÉbÉNÇåxçêÇ∑ÇÈÉÜÅ[ÉUÉuÉåÅ[ÉNÇ…ÇÊÇËÅAé©ìÆìIÇ… MacsBug Ç…ì¸ÇËÇ‹Ç∑ÅBLJǵǪǧǻǡÇΩÇÁÅAÇ∑ÇÆÇ…Åumrj dl
ÅvÇ≈è⁄ç◊èÓïÒÇí≤Ç◊ǃÇ≠ÇæÇ≥Ç¢ÅB
ÉfÉoÉbÉOÉrÉãÉhÇÃÇŸÇ©ÇÃï÷óòÇ»ã@î\Ç…ÇÕÅAÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃç≈íÜÇ…ÇÕÉJÅ[É\ÉãÇÃå`èÛÇ™è¨Ç≥Ç»ÉuÉãÉhÅ[ÉUÅ[Ç…Ç»ÇÈDZÇΔÇ≈Ç∑ÅBDZÇÃã@î\ǙdžÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™í∑Ç¢ä‘í‚é~Ç∑ÇÈå¥àˆÇ™ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇ»ÇÃǩǫǧǩîªífÇ≈Ç´Ç‹Ç∑ (à»â∫Ç≈èqÇ◊ÇÈ mrj tracegc
ÉRÉ}ÉìÉhÇ≈LJìØólÇ≈Ç∑)ÅB
mrj extant
)åªç›ÉçÅ[ÉhÇ≥ÇÍǃǢÇÈëSÉNÉâÉXÇâpéöèáÇ≈ï\é¶ÇµÇ‹Ç∑ÅBÉNÉâÉXÇ≤ÇΔÇ…åªç›ÇÃÉCÉìÉXÉ^ÉìÉXêîÇ®ÇÊÇ—ç≈ëÂÉCÉìÉXÉ^ÉìÉXêîÇï\é¶ÇµÇ‹Ç∑ÅBDZÇÃÉRÉ}ÉìÉhÇ…êîílÉpÉâÉÅÅ[É^Çí«â¡Ç∑ÇÈÇΔÅAåªç›ÇÃÉCÉìÉXÉ^ÉìÉXêîǙǪÇÃêîà»è„ÇÃÉNÉâÉXÇÃǛǙï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
mrj tracealloc
íl)ÅuílÅvÇ™ 1 ÇæÇΔÅAÉIÉuÉWÉFÉNÉgê∂ê¨ÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉIÉuÉWÉFÉNÉgÇ™ê∂ê¨Ç≥ÇÍÇÈÇΩÇ—Ç…ÉRÉìÉ\Å[ÉãDžǪÇÃÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXñºÇä‹Çfi 1 çsï™ÇÃèÓïÒÇ™èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕëΩó ÇÃèoóÕÇ…Ç»ÇËÇ‹Ç∑ (Ç≤Ç≠íPèÉÇΔévÇÌÇÍÇÈÉRÅ[ÉhÇ≈Ç≥ǶÇΩÇ≠Ç≥ÇÒÇà String
Ç‚ StringBuffer
ÉIÉuÉWÉFÉNÉgÇê∂ê¨ÇµÇ‹Ç∑)ÅBǵǩǵÉIÉuÉWÉFÉNÉgÇÃégópÇ…ä÷Ç∑ÇÈÉRÅ[ÉhÇÃå¯ó¶Çë™ÇÈÇ…ÇÕÇΩÇ¢Ç÷ÇÒï÷óòÇ»ï˚ñ@Ç≈Ç∑ÅB
mrj tracegc
íl)ÅuílÅvÇ™ 1 ÇæÇΔÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇ™ãNDZÇÈÇΔǪÇÃè⁄ç◊Çï\Ç∑Ç–ÇΔÇ‹ÇΔÇ‹ÇËÇÃèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÓïÒÇÃíÜêgÇÕÇŸÇΔÇÒÇ«ñ≥ópÇÃLJÇÃÇ≈Ç∑Ç™ÅAÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃî≠ê∂ÇéãäoìIÇ…ímÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇΔǢǧì_Ç≈óLå¯Ç≈Ç∑ÅB
mrj tracem
íl)ÅuílÅvÇ™ 1 ÇæÇΔÉÅÉ\ÉbÉhÇÃÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉÅÉ\ÉbÉhÇÃåƒÇ—èoǵÇΔñflÇËÇ≈ÅAÉRÉìÉ\Å[ÉãÇ… 1 çsï™ÇÃèÓïÒÇ™èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕëÂó ÇÃèoóÕÇê∂ê¨Ç∑ÇÈÇΩÇflÅAmrj redirect
ÇégǡǃÅAÉRÉìÉ\Å[ÉãÉEÉBÉìÉhÉEÇ≈ÇÕÇ»Ç≠ÅAÉtÉ@ÉCÉãÇ…èëÇ´èoÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBÉvÉçÉOÉâÉÄÇé~ÇflÇ∏Ç…é¿çsÇÃó¨ÇÍÇí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇÃÇ≈ÅAçÇêÖèÄÉfÉoÉbÉKÇ™óòópÇ≈ǴǻǢèÍçáǻǫDžï÷óòÇ≈Ç∑ÅB
mrj trace
íl)ÅuílÅvÇ™ 1 ÇæÇΔñΩóflÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBJava ÉoÉCÉgÉRÅ[ÉhñΩóflÇ™é¿çsÇ≥ÇÍÇÈÇΩÇ—Ç… 1 çsï™ÇÃèÓïÒÇ™ÉRÉìÉ\Å[ÉãÇ…èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇ™óLå¯Ç»èÍçáÇÕÇŸÇΔÇÒǫdžÇËÇ‹ÇπÇÒÅBîúëÂÇ»ó ÇÃèÓïÒÇ™ê∂ê¨Ç≥ÇÍÇÈÇÃÇ≈ÅAÇ‹Ç∏ mrj redirect
Ç≈èoóÕêÊÇÉtÉ@ÉCÉãÇ…êÿÇËë÷ǶǃÇ≠ÇæÇ≥Ç¢ÅBJIT ÉRÉìÉpÉCÉâÇ™ê∂ê¨ÇµÇΩÉRÅ[ÉhÇ™é¿çsÇ≥ÇÍÇÈèÍçáÇÕâΩLJï\é¶Ç≥ÇÍÇ‹ÇπÇÒÇÃÇ≈ÅADZÇÃÉRÉ}ÉìÉhÇégópÇ∑ÇÈèÍçáÇÕÅAÇ‹Ç∏ JIT ÇÉIÉtDžǵǃǩÇÁ MRJ ÇãNìÆÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB
MRJ 2.1 Ç≈ÇÕï\é¶Ç≥ÇÍǻǢÉoÉCÉgÉRÅ[ÉhǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕéüÇÃÉäÉäÅ[ÉXÇ≈èCê≥Ç∑ÇÈó\íËÇ≈Ç∑ÅB
mrj graphrefs
ÉnÉìÉhÉã)mrj fr
ÇÊÇËÇ∏Ç¡ÇΔè⁄ǵǢéQèΔÉgÉåÅ[ÉXÇ≈Ç∑ÅBéQèΔå≥ÇÃÉIÉuÉWÉFÉNÉg (static Ç»ïœêîǻǫ) ÇΔǪÇÍÇ™éQèΔÇ∑ÇÈÉIÉuÉWÉFÉNÉg (ǵÇΩǙǡǃÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃëŒè€Ç…Ç»ÇÁǻǢ) ÇΔÇèáÇ…åüçıǵǃï\é¶ÇµÇ‹Ç∑ÅB
íçà”ÅF DZÇÃÉRÉ}ÉìÉhÇÕêŸë¨Ç…çÏê¨Ç≥ÇÍÇΩÇΩÇfl (çÏé“Çà Steve Zellers ÇÕÇΔÇ…Ç©Ç≠ÉÅÉÇÉäÉäÅ[ÉNÇÇ»Ç≠Ç∑ïKóvǙdžǡÇΩÇΩÇfl)ÅAMRJ 2.1 Ç≈ÇÕç≈è¨å¿ÇÃÉeÉXÉgǵǩçsÇÌÇÍǃǢNjÇπÇÒÅBApple Applet Runner Ç≈ÇÕìÆçÏǵNjÇπÇÒÅBîÁì˜Ç»òbÇ≈Ç∑Ç™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇ≈ÉÅÉÇÉäÉäÅ[ÉNÇãNDZÇ∑èÍçáǙdžÇËÇ‹Ç∑ÅB |
DZÇÃÉRÉ}ÉìÉhÇÕ MRJ ÇÃÉÅÉCÉìÉXÉåÉbÉhÇ™êßå‰ÇéÊìæÇ∑ÇÈÇ‹Ç≈ë“ÇøÅAèÓïÒÇèWÇflÅAåãâ Ç System.out
Ç…èoóÕǵNjÇ∑ÅBà»â∫Ç…ìTå^ìIÇ»èoóÕì‡óeÇÃç≈èâÇÃïîï™Çé¶ÇµÇ‹Ç∑ÅB
mrj graphrefs $6b11f18 recursively searching for references to $6b11f18 References to: $6b11f18 instance field: $6b11aa8 java/lang/ Thread.target(Ljava/lang/Runnable;) instance field: $6b126c8 com/apple/mrj/console/Console$ConsoleArea.this$0(Lcom/ apple/mrj/console/Console;) instance field: $6b13628 com/apple/mrj/ console/Console$1.this$0(Lcom/apple/mrj/console/Console;) java thread var ref $6b11f18 at $x (tid $68ef584, ) References to: $6b11aa8 array element: $6b11ea8 [1] c thread found $6b11aa8 at $680f2fc (tid $6adda7c, ConsoleThread) c thread found $6b11aa8 at $680f34c (tid $6adda7c, ConsoleThread) c thread found $6b11aa8 at $680f370 (tid $6adda7c, ConsoleThread) c thread found $6b11aa8 at $680f3e8 (tid $6adda7c, ConsoleThread) java thread var ref $6b11aa8 at $x (tid $68ef558, ) |
ÉgÉåÅ[ÉXÇÕãÛçsÇ≈ãÊêÿÇÁÇÍÇ‹Ç∑ÅBäeÉgÉåÅ[ÉXÇÕÅuReferences to:
ÅvÇ≈ÇÕÇ∂Ç‹ÇËÅAǪÇÃå„Ç…ÉgÉåÅ[ÉXíÜÇÃÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ÷ÇÃëSéQèΔÇ™ë±Ç´Ç‹Ç∑ÅBǪÇÍÇ…ÇÕÅAëºÇÃÉIÉuÉWÉFÉNÉgì‡ÇÃÉCÉìÉXÉ^ÉìÉXïœêîÅAê√ìIïœêîÅAåªçsÉXÉ^ÉbÉNÉtÉåÅ[ÉÄì‡ÇÃÉçÅ[ÉJÉãïœêîǻǫǙdžÇËÇ‹Ç∑ÅB
ç≈èâÇÃÉgÉåÅ[ÉXèÓïÒÇÕÉRÉ}ÉìÉhÇ≈éwíËǵÇΩÉIÉuÉWÉFÉNÉgÇ…ä÷Ç∑ÇÈLJÇÃÇ≈Ç∑ÅBå„ë±ÇÃÉgÉåÅ[ÉXèÓïÒÇÕÅAǪÇÍà»ëOÇÃÉgÉåÅ[ÉXÇ≈å©Ç¬Ç©Ç¡ÇΩÉIÉuÉWÉFÉNÉgÇ…ä÷Ç∑ÇÈLJÇÃÇ≈Ç∑ÅBǪÇÍǺÇÍÇÃÉgÉåÅ[ÉXåãâ ÇíHÇÈDZÇΔÇ≈ÅAñ‚ëËÇÃÉIÉuÉWÉFÉNÉgǙǫDZǩÇÁéQèΔÇ≥ÇÍǃǢÇÈÇΩÇflÇ…ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃëŒè€Ç…Ç»ÇÁǻǢǩǙÇÌÇ©ÇËÇ‹Ç∑ÅB
DZÇÃèoóÕèÓïÒÇÕÇΩÇ¢Ç÷ÇÒì«Ç›Ç√ÇÁǢLJÇÃÇ≈ÅAÇÊÇËÇÌÇ©ÇËÇ‚Ç∑Ç≠Ç∑ÇÈÉcÅ[ÉãÇ™ïKóvÇæÇΔévǡǃǢNjÇ∑ÅBǵǩǵÇΔÇËdžǶÇ∏ÇÃÇΔDZÇÎÇÕÅAèoóÕÇÉvÉçÉOÉâÉÄÉGÉfÉBÉ^Ç…ì\ÇËïtÇØÇƒÅAåüçıã@î\ÇégǡǃÅAäYìñÇà 16 êiêîÇíTÇ∑ÇΔÇÊÇ¢Ç≈ǵÇÂǧÅB
Java ÉIÉuÉWÉFÉNÉgÇ‹ÇΩÇÕîzóÒÇÃÉnÉìÉhÉãÇ™ÇÌÇ©ÇÍÇŒÅAÉIÉuÉWÉFÉNÉgÇÃÉtÉBÅ[ÉãÉhÇ‚îzóÒÇÃóvëfÇí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉnÉìÉhÉãÇΔÇÕ 32 ÉrÉbÉgÇÃÉIÉuÉWÉFÉNÉg ID Ç≈Ç∑ÅBÉnÉìÉhÉãÇå©Ç¬ÇØÇÈÇ…ÇÕ 3 ǬÇÃï˚ñ@ǙdžÇËÇ‹Ç∑ÅB
dcmd
ÉRÉ}ÉìÉhÇÃëΩÇ≠Ç≈ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBó·Ç¶ÇŒÅAmrj sc
ÇÕÉXÉåÉbÉhÇÃÉnÉìÉhÉãÇ‚ÅAǪÇÍǺÇÍÇÃÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇÃéÛÇØéË (ǬNjÇËÅuthis
Åv) ÇÃÉnÉìÉhÉãÇï\é¶ÇµÇ‹Ç∑ÅBObject.hashCode
ÉÅÉ\ÉbÉhÇÕãÔçáÇÊÇ≠ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇâEÇ… 3 ÉrÉbÉgÉVÉtÉgǵÇΩílÇï‘ǵNjÇ∑ÅBǵÇΩǙǡǃó·Ç¶ÇŒ foo ÇÃÉnÉìÉhÉãÇÉRÉìÉ\Å[ÉãÇ…ï\é¶Ç∑ÇÈÇ…ÇÕéüÇÃÇÊǧDžǵNjÇ∑ÅBSystem.out.println(Integer.toHexString(foo.hashCode()<<3));
hashCode
Ç™ï ÇÃílÇï‘Ç∑ÇÊǧÉIÅ[ÉoÉâÉCÉhÇ≥ÇÍǃǢÇÈÇΔÉnÉìÉhÉãÇÕéÊìæÇ≈Ç´Ç‹ÇπÇÒÅBǵÇΩǙǡǃÅAString
Ç‚ Point
Ç…ÇÕégǶNjÇπÇÒÅBǵǩǵÅAëÂîºÇÃÉNÉâÉXÇ≈ÇÕDZÇÃÉRÅ[ÉhÇégǡǃïKóvÇ»ÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãílÇÉRÉìÉ\Å[ÉãÇ…èoóÕÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBmrj do
ÉnÉìÉhÉã)éwíËÇÃÉnÉìÉhÉãÇéùǬÉIÉuÉWÉFÉNÉgÇï\é¶ÇµÇ‹Ç∑ÅBåãâ ÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
java.lang.ThreadGroup@5D590C0/5D0A668 SuperName: java/lang/Object # ClassName: java/lang/ThreadGroup parent.(Ljava/lang/ThreadGroup;) = $05d540a0 name.(Ljava/lang/String;) = $05d590d0 maxPriority.(I) = 10 destroyed.(Z) = false daemon.(Z) = false vmAllowSuspension.(Z) = false nthreads.(I) = 3 threads.([Ljava/lang/Thread;) = $05d59090 ngroups.(I) = 1 groups.([Ljava/lang/ThreadGroup;) = $05d5a948 # ClassName: java/lang/Object |
ç≈èâÇÃçsÇ…ÇÕÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXñºÇΔÉnÉìÉhÉãÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB(Åu/
ÅvÇ…ë±Ç≠ 2 î‘ÇflÇÃêîílÇÕñÇ…óßǬLJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB) 2 î‘ÇflÇÃçsÇ…ÇÕÉXÅ[ÉpÅ[ÉNÉâÉXÇÃñºëOÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB
ǪÇÃå„Ç…ÇÕÅAÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇΔǪÇÍǺÇÍÇÃÉXÅ[ÉpÅ[ÉNÉâÉXÇÃèÓïÒÇ™ë±Ç´Ç‹Ç∑ÅBäeÉuÉçÉbÉNÇÕÉNÉâÉXñºÇ≈énÇ‹ÇËÅAǪÇÃÉNÉâÉXÇ≈êÈåæÇ≥ÇÍǃǢÇÈëSïœêîÇΔÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ…Ç®ÇØÇÈïœêîÇÃílÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB(ê√ìIïœêîÇÃèÍçáç≈å„Ç…Åu[static]
ÅvÇ™ïtÇ´Ç‹Ç∑ÅB)
äeçsÇÃïœêîèÓïÒÇ…ÇÕÅAïœêîñºÇ…ë±ÇØÇƒäáå ÇÃíÜÇ…å^Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBå^ÇÃï\ãLÇÕ JVM ÇÃí èÌÇÃÉGÉìÉRÅ[Éhå`éÆÇópǢNjÇ∑ÅBǬNjÇËäÓñ{å^ÇÕǪÇÍÇï\Ç∑ 1 ï∂éö (êÆêî int Çà I
ÅAò_óùå^ boolean ÇÃ Z
ǻǫ)ÅAÉIÉuÉWÉFÉNÉgÇÃèÍçáÇÕÅuL
ÅvÇÃå„ÇÎÇ…ÉNÉâÉXñºÇïtÇØÅu;
ÅvÇ≈èIÇÌÇËÇ‹Ç∑ÅB
ïœêîå^ÇÕÉIÉuÉWÉFÉNÉgÇÃèÍçáÅAï\é¶Ç≥ÇÍÇÈílÇÕǪÇÃÉnÉìÉhÉãÇ≈Ç∑ÅBǪÇÃÉIÉuÉWÉFÉNÉgLJí≤Ç◊ÇΩÇØÇÍÇŒÅAÇ≥ÇÁÇ… mrj do
ÉRÉ}ÉìÉhÇégópǵǃÇ≠ÇæÇ≥Ç¢ÅB
mrj do
ÉnÉìÉhÉã)éwíËÇ≥ÇÍÇΩÉnÉìÉhÉãÇéùǬîzóÒÇÃì‡óeÇï\é¶ÇµÇ‹Ç∑ÅBç≈èâÇÃçsÇÕîzóÒóvëfÇÃå^ÇΔí∑Ç≥Çé¶ÇµÇ‹Ç∑ÅBǪÇÍÇ…ë±ÇØÇƒäeóvëfÇÃèÓïÒǙǪÇÍǺÇÍ 1 çsÇ∏Ǭï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
îzóÒÇÃàÍïîï™ÇæÇØÇï\é¶Ç∑ÇÈÇ…ÇÕÇ≥ÇÁÇ… 2 Ǭó]ï™Ç»ÉpÉâÉÅÅ[É^ÇéwíËǵNjÇ∑ÅBï\é¶ÇµÇΩÇ¢ç≈èâÇÃóvëfÇÃÉCÉìÉfÉbÉNÉXÇΔÅAï\é¶ÇµÇΩÇ¢ç≈å„ÇÃóvëfÇÃéüÇÃÉCÉìÉfÉbÉNÉXÇ≈Ç∑ÅB
mrj ds
ÉnÉìÉhÉã)String ÉIÉuÉWÉFÉNÉgÇÃì‡óeÇï\é¶Ç∑ÇÈä»ï÷Ç»ï˚ñ@Ç≈Ç∑ÅB(do
Ç‚ da
ÉRÉ}ÉìÉhÇ≈ char[]
å^ÇÃîzóÒÇΔǵǃï\é¶Ç∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑Ç™ÅAñ ì|Ç≈Ç∑ÅB)
DZÇÃÉRÉ}ÉìÉhÇÕ ASCII à»äOÇÃï∂éöÇ≈ÇÕñÇ…óßÇøÇ‹ÇπÇÒÅBDZÇÍÇé¿åªÇ∑ÇÈÇ…ÇÕ MacsBug Ç…ÇÕä‹Ç‹ÇÍǃǢǻǢçÇìxÇ»ïœä∑ÉTÅ[ÉrÉXÇ™ïKóvÇΔÇ»ÇÈÇΩÇflÇ≈Ç∑ÅB
(mrj fc
ñºëO)éwíËÇ≥ÇÍÇΩñºëOÇÃÉçÅ[ÉhçœÇ›ÇÃÉNÉâÉXÇíTǵNjÇ∑ÅBÉpÉbÉPÅ[ÉWñºÇä‹ÇfiäÆëSÇ»ÉNÉâÉXñºÇéwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉpÉbÉPÅ[ÉWñºÇÕÅu.
ÅvÇ≈ÇÕÇ»Ç≠Åu/
ÅvÇ≈ãÊêÿǡǃÇ≠ÇæÇ≥Ç¢ÅBóéjìIÇ»éñèÓÇ©ÇÁì‡ïîÇ≈ÇÕÉNÉâÉXñºÇÅu/
ÅvÇ≈ãÊêÿÇËÇ‹Ç∑ÅB
DZÇÃÉRÉ}ÉìÉhÇÕÉNÉâÉXÇå©Ç¬ÇØÇÈÇΔÅAäYìñÇà Class
ÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÇï‘ǵNjÇ∑ÅBDZÇÃÉIÉuÉWÉFÉNÉgÇÃèÓïÒÇÕǪÇÍÇŸÇ«ñÇ…óßǬLJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÇ™ÅAì¡íËÇÃÉNÉâÉXÇ™ÉçÅ[ÉhçœÇ›Ç©Ç«Ç§Ç©Çí≤Ç◊ÇÈÇ…ÇÕï÷óòÇ≈Ç∑ÅB
ÉNÉâÉXÉÅÉ\ÉbÉhÇÃï\é¶ (mrj dcm
ÉNÉâÉXñº)
éwíËÇ≥ÇÍÇΩÉNÉâÉXÇÃëSÉÅÉ\ÉbÉhÇï\é¶ÇµÇ‹Ç∑ (åpè≥Ç≥ÇÍÇΩÉÅÉ\ÉbÉhLJä‹Ç›Ç‹Ç∑)ÅBÉNÉâÉXñºÇÕÅAmrj fc
Ç≈èqÇ◊ÇΩÇÊǧDžÅu/
ÅvÇégǧäÆëSÇ»ñºëOÇéwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBèoóÕå`éÆÇÕ mrj do
ÇΔìØólÇ≈Ç∑ÅB
ï\é¶Ç≥ÇÍÇÈèÓïÒÇÕäYìñÇÃÉNÉâÉXÇΔǪÇÃÉXÅ[ÉpÅ[ÉNÉâÉX (åQ) Ç…ï™Ç©ÇÍÇ‹Ç∑ÅBäeïîï™Ç…ÇÕÉNÉâÉXñºÅAǪÇÃÉNÉâÉXÇ≈ì±ì¸Ç≥ÇÍÇΩäeÉÅÉ\ÉbÉhÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBäeÉÅÉ\ÉbÉhÇÕǪÇÍǺÇÍ 1 çsÇ∏ǬéüÇÃèÓïÒÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB
- ÉÅÉ\ÉbÉhñº
- ÉÅÉ\ÉbÉhÇÃÉVÉOÉlÉ`ÉÉÅBäeÉpÉâÉÅÅ[É^å^Çäáå ÇÃíÜÇ…èëÇ´ÅAǪÇÍÇ…ë±ÇØÇƒï‘ÇËílÇÃå^ÇèëÇ´Ç‹Ç∑ÅBå^ÇÃï\ãLÇÕ JVM ÇÃí èÌÇÃÉGÉìÉRÅ[Éhå`éÆÇópǢNjÇ∑ÅBǬNjÇËäÓñ{å^ÇÕǪÇÍÇï\Ç∑ 1 ï∂éö (êÆêî
int
ÇÃ I
ÅAò_óùå^ boolean
ÇÃ Z
ǻǫ)ÅAÉIÉuÉWÉFÉNÉgÇÃèÍçáÇÕÅuL
ÅvÇÃå„ÇÎÇ…ÉNÉâÉXñºÇïtÇØÅu;
ÅvÇ≈èIÇÌÇËÇ‹Ç∑ÅB
- ê√ìIïœêîÇï\Ç∑
static
Ç‚ìØä˙ÇéwíËÇ∑ÇÈ synchronized
ǻǫÇÃèCè¸éqÅB
ÉIÉuÉWÉFÉNÉgÉÅÉ\ÉbÉhÇÃï\é¶ (mrj dom
ÉnÉìÉhÉã)
mrj dcm
ÇΔìØólÇ≈Ç∑Ç™ÅAéwíËÇ≥ÇÍÇΩÉnÉìÉhÉãÇéùǬÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇÃÉÅÉ\ÉbÉhÇï\é¶ÇµÇ‹Ç∑ÅB
ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇΔÉXÉåÉbÉhï\é¶ÇÃâéfl
mrj sc
ÉRÉ}ÉìÉhÇΔ mrj threads
ÉRÉ}ÉìÉhÇÕÇ¢Ç∏ÇÍLJÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇï\é¶ÇµÇ‹Ç∑ÅBǪDZDžÇÕÅAÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑Ç™ÅAóLâvÇ»èÓïÒÇ™ãlÇflçûÇ‹ÇÍǃǢNjÇ∑ÅBìTå^ìIÇ»ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇÃó·Çé¶ÇµÇ‹Ç∑ÅB
"QDPipeline"
TID: $60a1bf8, prio: 5
sys_thread: $5fe3200, priority: 5, saved_sp: $5fc5980
state: WCV, mon: $727ec24, cq: $727ec30
$60a1c20 -> java.lang.Object.wait(Object.java:315)
$60a1c20 -> com.apple.mrj.internal.awt.QDPipeline.run(QDPipeline.java:289)
$60a1bf8 -> java.lang.Thread.run(Thread.java:474)
ÉXÉåÉbÉhÉwÉbÉ_
ç≈èâÇà 4 çsÇÕÉXÉåÉbÉhÇ…ä÷Ç∑ÇÈèÓïÒÇï\é¶ÇµÇ‹Ç∑ÅB
1 çsñ⁄ÇÃà¯ópïÑÇ…àÕÇ‹ÇÍÇΩÉXÉåÉbÉhñºÅFÉXÉåÉbÉhÇÃÉRÉìÉXÉgÉâÉNÉ^Ç…ìnÇ≥ÇÍÇΩ String å^ÇÃÉpÉâÉÅÅ[É^Ç≈Ç∑ÅBéwíËǵǻǩǡÇΩèÍçáÇÕÅuThread-7ÅvÇÃÇÊǧǻÉfÉtÉHÉãÉgÇÃñºëOÇ…Ç»ÇËÇ‹Ç∑ÅBÉXÉåÉbÉhÇ…à”ñ°ÇÃdžÇÈñºëOÇïtÇØÇÈÇΔÉfÉoÉbÉOǙǵǂÇ∑Ç≠Ç»ÇËÇ‹Ç∑ÅB
TID:
ÉXÉåÉbÉhÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇÕ mrj do ǻǫÇÃÉIÉuÉWÉFÉNÉgåüç∏ÉRÉ}ÉìÉhÇ≈égǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
prio:
í èÌÇà Java ÉXÉåÉbÉhÇÃóDêÊèáà Ç≈ÅA1Å`10 ÇÃîÕàÕÇ…Ç»ÇËÇ‹Ç∑ÅBé¿ç€Ç…í≤Ç◊ǃǛÇÈÇΔÅuÉÅÉCÉìÅvÇÃÉXÉåÉbÉhÇÃóDêÊèáà Ç™ 11 DžǻǡǃǢÇÈDZÇΔÇ…ì«é“ÇÕÅAãCÇ√Ç©ÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBÉvÉçÉOÉâÉÄë§Ç≈DZÇÃÇÊǧDžê›íËÇ∑ÇÈDZÇΔÇÕïsâ¬î\Ç≈Ç∑ÅBJVM Ç™ÇÌÇ¥ÇΔǪÇÃÇÊǧDžê›íËÇ∑ÇÈÇÃÇ≈Ç∑ÅBDZǧÇ∑ÇÈóùóRÇÕÅAÉÅÉCÉìÉXÉåÉbÉhÇÕ JManager
åƒÇ—èoǵÇÃç€ÇŸÇ©ÇÃdžÇÁljÇÈÉXÉåÉbÉhÇ…äÑÇËçûÇfiïKóvǙdžÇÈÇΩÇflÇ≈Ç∑ÅB
sys_thread:
ÉlÉCÉeÉBÉu (â∫à ÉVÉXÉeÉÄÇÃ) ÉXÉåÉbÉhÇÃç\ë¢ëÃÇéwǵNjÇ∑ÅBÉlÉCÉeÉBÉuÉXÉåÉbÉhÇÃèÓïÒÇÕ mrj thd
ÉRÉ}ÉìÉhÇ≈ï\é¶Ç≈Ç´Ç‹Ç∑ÅBÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑Ç™ëÂó ÇÃèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
saved_sp:
džÇÈÇ¢ÇÕ *current thread*
: å©èoǵǙÅusaved_sp
ÅvÇÃèÍçáÇÕÅAÉXÉåÉbÉhÇÃÉlÉCÉeÉBÉuÉXÉ^ÉbÉNÇéwǵNjÇ∑ÅBDZÇÍÇÕ MacsBug ÇÃí èÌÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÉRÉ}ÉìÉh sc7
Ç…ÇÊÇÈÉXÉ^ÉbÉNï\é¶Ç≈égǶNjÇ∑ÅB(ǵǩǵ sc7
Ç…ÇÊÇÈÉXÉ^ÉbÉNÉNÉçÅ[Éãï\é¶ÇÕdžNjÇËê≥ämÇ≈ÇÕÇ»Ç≠ÅAëÂó ÇÃÉSÉ~Ç™ï\é¶Ç≥ÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB) å©èoǵǙÅu*current thread*
ÅvÇÃèÍçáÇÕÅADZÇÃÉXÉåÉbÉhÇÕåªç›é¿çsíÜÇ≈džÇÈDZÇΔÇà”ñ°ÇµÇ‹Ç∑ÅBsc
Ç‚ sc7
ÉRÉ}ÉìÉhÇà¯êîǻǵÇ≈é¿çsÇ∑ÇÍnjǪÇÃÉlÉCÉeÉBÉuÉXÉ^ÉbÉNÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
priority:
óéjìIÇ»éñèÓǙdžǡǃÅAëOçsÇÃÅuprio
ÅvÇΔǢǧå©èoǵÇÃèÓïÒÇΔÇæÇ‘Ç¡ÇƒÇ¢Ç‹Ç∑ÅB
state:
ÉXÉåÉbÉhÇÃåªç›ÇÃèÛë‘Ç≈Ç∑ÅB
ÅERDY
(ready): ÉXÉåÉbÉhÇ™é¿çsâ¬î\Ç≈džÇÈDZÇΔÇï\ǵNjÇ∑ÅBǬNjÇËåªç›Ç∑Ç≈Ç…é¿çsíÜÇ©ÅAÉXÉPÉWÉÖÅ[ÉâÇ™ëIëÇ∑ÇÍÇŒë¶é¿çsèÛë‘Ç…Ç»ÇÍÇÈÇ©ÅAÇ¢Ç∏ÇÍÇ©ÇÃèÛë‘Ç≈Ç∑ÅB(å„é“ÇÃèÛë‘Ç≈džǡǃLJÅADZÇÍÇÊÇËóDêÊèáà ÇÃçÇÇ¢ÉXÉåÉbÉhÇ™èÌÇ…ÉrÉWÅ[èÛë‘Ç≈džÇÍÇŒé¿çsÇÃÉ`ÉÉÉìÉXÇÕdžÇËÇ‹ÇπÇÒÅB)
ÅEWMON
(waiting on monitor): ÇΩǢǃǢÇÃèÍçáÅAìØä˙ (synchronized
) ÇÃéwíËÇÃdžÇÈÉÅÉ\ÉbÉhÇ‹ÇΩÇÕé¿çsï∂Ç…Ç‹Ç≥Ç…ì¸ÇÎǧÇΔÇ∑ÇÈÉXÉåÉbÉhÇ™ÅAǪÇÃÉIÉuÉWÉFÉNÉgÇΔÇ∑Ç≈Ç…ìØä˙íÜÇÃÉXÉåÉbÉhǙǟǩDždžÇÈÇΩÇflÅAë“ÇøÇÃÉuÉçÉbÉNÇ…ì¸Ç¡ÇƒÇ¢ÇÈDZÇΔÇï\ǵNjÇ∑ÅB(dcmd
ÇÃÉoÉOÇÃÇΩÇflÅAé¿çsâ¬î\Ç»ÉXÉåÉbÉhÇ»ÇÃÇ…ÇΔÇ´ÇΩÇ‹ä‘à·Ç¶ÇÁÇÍǃ WMON
ÇΔÇ≥ÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB)
ÅEWCV
(waiting on condition variable): ÉXÉåÉbÉhÇÕ Object.wait
ÉÅÉ\ÉbÉhÇ≈ÉuÉçÉbÉNǵǃǮÇËÅAObject.notify
Ç‹ÇΩÇÕ notifyAll
Ç…ÇÊÇÈçƒäJÇë“ǡǃǢÇÈèÛë‘Ç≈Ç∑ÅB
ÅESUSP
(suspended): ÉXÉåÉbÉhÇÕ Thread.suspend
Ç≈é¿çsÇï€óØÇ≥ÇÍǃǢÇÈèÛë‘Ç≈Ç∑ÅB
mon:
DZÇÃÉtÉBÅ[ÉãÉhÇÕÅAÉXÉåÉbÉhèÛë‘Ç™ WMON
ÇÃèÍçáÅAǪÇÃÉXÉåÉbÉhÇ™ÉuÉçÉbÉNǵǃǢÇÈÉÇÉjÉ^Çà ID Çé¶ÇµÇ‹Ç∑ÅBÉÇÉjÉ^ÇÕí èÌâΩÇÁÇ©ÇÃÉIÉuÉWÉFÉNÉgÇΔëŒâûïtÇØÇÁÇÍǃǢNjÇ∑Ç™ÅAÉÇÉjÉ^ ID ǪÇÃLJÇÃÇÕÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAÇ«ÇÃÉIÉuÉWÉFÉNÉgDžLJëŒâûǵǻǢÉÇÉjÉ^LJë∂ç›ÇµÇ‹Ç∑ÅBmrj fm
ÉRÉ}ÉìÉhÇégǧÇΔǪÇÃÉÇÉjÉ^ÇÃèäóLé“Ç≈džÇÈ Java ÉIÉuÉWÉFÉNÉgÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBÇ‹ÇΩÅAmrj mon
ÉRÉ}ÉìÉhÇ≈ÉÇÉjÉ^é©ëÃÇÃèÓïÒ (ÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑) Çï\é¶Ç≈Ç´ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB
cq:
DZÇÃÉtÉBÅ[ÉãÉhÇÕÅAÉXÉåÉbÉhèÛë‘Ç™ WCV
ÇÃèÍçáÅAǪÇÃÉXÉåÉbÉhÇ™ë“ÇøèÛë‘Ç…íuÇ©ÇÍǃǢÇÈÉRÉìÉfÉBÉbÉVÉáÉìÉLÉÖÅ[Çà ID Çï\ǵNjÇ∑ÅBDZÇÍÇÕì‡ïîÉfÅ[É^ç\ë¢ÇÃÇ–ÇΔǬÇ≈ÅAǪDZDžÇÕÉvÉçÉOÉâÉ}Ç™ä÷ímÇ∑ÇÈÇÊǧǻïîï™ÇÕdžÇËÇ‹ÇπÇÒÅB
ÉXÉ^ÉbÉNÉNÉçÅ[ÉãǪÇÃLJÇÃ
ÉXÉåÉbÉhÉwÉbÉ_ÇÃå„Ç…ÇÕ Java ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇ™ë±Ç´Ç‹Ç∑ÅBDZÇÍÇÕÇΩǢǃǢÇÃèÍçáÅAó·äOÇ™ãNDZǡÇΩÇΔÇ´Ç…ÉRÉìÉ\Å[ÉãÇ…ï\é¶Ç≥ÇÍÇÈÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇΔìØàÍÇÃLJÇÃÇ≈Ç∑ÅB
ÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇÕêVǵǢèáÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǬNjÇËåªç›ÇÃÉXÉåÉbÉhÇ™àÍî‘è„Ç…óàÇ‹Ç∑ÅB
äeçsÇÃç≈èâÇ…ÇÕ 16 êiêîÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕÉÅÉ\ÉbÉhÇÃÅuthis
Åvïœêî (éÛÇØéË) ÇÃÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇÕ mrj do
ǻǫÇÃÉIÉuÉWÉFÉNÉgåüç∏ÉRÉ}ÉìÉhÇ≈égópÇ≈Ç´Ç‹Ç∑ÅB
ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ…ë±Ç¢ÇƒÉÅÉ\ÉbÉhÇÃñºëOÇ™óàÇ‹Ç∑ÅBǪÇÍÇ…ë±Ç¢Çƒäáå ÇÃíÜÇ…ÅAÉ\Å[ÉXÉtÉ@ÉCÉãÇÃñºëOÇΔî≠ê∂â”èäÇÃçsî‘çÜÇ™ì¸ÇËÇ‹Ç∑ÅB
íçà”ÅF
ÉNÉâÉXÉtÉ@ÉCÉãÇ…çsî‘çÜÇÃëŒâûï\Ç™ä‹Ç‹ÇÍǃǢǻǢèÍçáÅAÉ\Å[ÉXÉtÉ@ÉCÉãñºÇΔçsî‘çÜÇÕï\é¶Ç≥ÇÍÇ‹ÇπÇÒÅB(Metrowerks CodeWarrior Ç≈ÉRÅ[ÉhÇÉRÉìÉpÉCÉãǵÇΩèÍçáÅAÉvÉçÉWÉFÉNÉgÉEÉBÉìÉhÉEÇÃÉ\Å[ÉXÉtÉ@ÉCÉãÇÃÇΔÇ»ÇËDždžÇÈÉfÉoÉbÉOÇÃàÛÇÉIÉìDžǵǃÇ≠ÇæÇ≥Ç¢ÅB)
É\Å[ÉXÉtÉ@ÉCÉãÇΔçsî‘çÜÇÃèÓïÒÇ™éÊìæÇ≈ǴǻǢÇΔÇ´ÅAǪÇÃïîï™ÇÕÅu(Compiled Code)ÅvÇΔï\é¶Ç≥ÇÍÇ‹Ç∑ÅBçsî‘çÜëŒâûï\ǙǻǢèÍçáÇÃÇŸÇ©ÅAJIT ÉRÉìÉpÉCÉâÇ…ÇÊÇËÉÅÉ\ÉbÉhÇ™ÉlÉCÉeÉBÉuÉRÅ[ÉhÇ…ÉRÉìÉpÉCÉãÇ≥ÇÍÇΩèÍçáLJìØólÇ≈Ç∑ÅBJIT Ç™ê∂ê¨ÇµÇΩÉlÉCÉeÉBÉuÇ»ñΩóflÇ Java ÉoÉCÉgÉRÅ[ÉhÇ…ñflÇ∑DZÇΔÇÕïsâ¬î\Ç©ÅAîÒèÌÇ…ÇfiÇ∏ǩǵǢÇÃÇ≈Ç∑ÅBçsî‘çÜÇï\é¶ÇµÇΩÇØÇÍÇŒ JIT ÇÉIÉtDžǵǃÇ≠ÇæÇ≥Ç¢ÅBǪÇÍÇ…ÇÕÅAÅuMRJ LibrariesÅvÉtÉHÉãÉ_Ç©ÇÁÅuMRJ PPC JITCÅvÇçÌèúǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉÇÉjÉ^ÉLÉÉÉbÉVÉÖÇÃï\é¶
ÉÇÉjÉ^ÇΔÇÕÉIÉuÉWÉFÉNÉgìØä˙Çé¿åªÇ∑ÇÈäÓñ{ã@ç\Ç≈Ç∑ÅBÉÇÉjÉ^ÇÕÉIÉuÉWÉFÉNÉgÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉXÉåÉbÉhÇ™âΩÇÁÇ©ÇÃÉIÉuÉWÉFÉNÉgÇΔìØä˙ÇéÊÇÎǧÇΔÇ∑ÇÈÇΔÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ…ÉÇÉjÉ^Ç™äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅB(âΩÇÃÉIÉuÉWÉFÉNÉgDžLJëŒâûǵǻǢì‡ïîégópÇÃÉÇÉjÉ^LJdžÇËÇ‹Ç∑ÅB)
è„ãLÇ≈èqÇ◊ÇΩÇÊǧDžÅAÉXÉ^ÉbÉNÉNÉçÅ[Éãï\é¶ÇÃÉwÉbÉ_Ç…ÇÕÅAǪÇÃÉXÉåÉbÉhÇ™ÉÇÉjÉ^Ç≈ÉuÉçÉbÉNǵǃǢÇÈǩǫǧǩÅALJǵǪǧǻÇÁǪÇÃÉÇÉjÉ^Çï\é¶ÇµÇ‹Ç∑ÅBǮǪÇÁÇ≠ì«é“Ç™éüÇ…ímÇËÇΩǢDZÇΔÇÕÅAǪÇÃÉÇÉjÉ^Ç…ëŒâûÇ∑ÇÈÉIÉuÉWÉFÉNÉgÇÕâΩÇ©ÇΔǢǧDZÇΔÇ≈ǵÇÂǧÅBÇΩǢǃǢÇÃèÍçáDZÇÍÇÕ (ǢǬLJÇΔÇÕǩǨÇËÇ‹ÇπÇÒÇ™)Åumrj threads
Åvï\é¶ÇÃÉÇÉjÉ^ÉLÉÉÉbÉVÉÖï\é¶ÇÃïîï™Çå©ÇÍÇŒÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÍÇÕç≈å„ÇÃÉXÉåÉbÉhÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇÃéüÇ…óàÇ‹Ç∑ÅBǪDZDžÇÕÅAç≈ãflÉÇÉjÉ^ÇälìæÇµÇΩÉIÉuÉWÉFÉNÉgÇ™óÒãìÇ≥ÇÍǃǢNjÇ∑ÅBìTå^ìIÇ»ï\é¶Çé¶ÇµÇ‹Ç∑ÅB
"com.apple.mrj.JManager.AVDispatcherThread@60A09C8/618AD48"
<unowned>
Waiting to be notified:
"AVGrp-com.apple.mrj.JManager.JMAWTContextImpl@c6ce6f-Disp" prio 4
ç≈èâÇÃçsÇÕÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇ≈Ç∑ÅBÅu@
ÅvÇΔÅu/
ÅvÇ…ã≤Ç‹ÇÍÇΩ 16 êiêîÇÕÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇégǶnj mrj do
ǻǫÇÃÉRÉ}ÉìÉhÇ≈ÉIÉuÉWÉFÉNÉgÇåüç∏Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
2 çsÇflÇÕǪÇÃÉÇÉjÉ^ÇèäóL (åªç›ï€éùǵǃǢÇÈ) ÉXÉåÉbÉhÇé¶ÇµÇ‹Ç∑ÅBèäóLé“ǙǻǢèÍçáÇÕÅu<unowned>
ÅvÇΔï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
ǪÇÃÉÇÉjÉ^Ç≈ÉuÉçÉbÉNǵǃǢÇÈÉXÉåÉbÉhÇ™ 1 ǬNjÇΩÇÕï°êîdžÇÈèÍçáÅuWaiting to be notified:
ÅvÇ…ë±Ç≠çsÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǪÇÍǺÇÍÅAñºëOÅAǪÇÍÇ…ë±ÇØÇƒÅu@
ÅvÅAÉXÉåÉbÉhÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÅAóDêÊèáà Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBè„Ç≈é¶ÇµÇΩÇÊǧDžäeÉXÉåÉbÉhÇÃè⁄ç◊ÇÕǪÇÍǺÇÍÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇ≈å©ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
ìØä˙Ç…ä÷òAǵǃãNDZÇÈñ‚ëËÇ≈ÇÊÇ≠èoǃÇ≠ÇÈ Java ÉIÉuÉWÉFÉNÉgÇ™ 2 ǬdžÇËÇ‹Ç∑ÇÃÇ≈ÅAǪÇÍDžǬǢǃê‡ñæÇµÇ‹ÇµÇÂǧÅBcom.apple.mrj.macos.toolbox.Toolbox
ÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÇÃÉçÉbÉNÇ≈ÅAAWT ÉsÉAǻǫÇÃÉlÉCÉeÉBÉuÉRÅ[ÉhdžÇÈÇ¢ÇÕ JDirect
ÉRÅ[ÉhÇ™ Mac ÉcÅ[ÉãÉ{ÉbÉNÉXÇΔìØä˙ÇéÊÇÈÇÃÇ…égópǵNjÇ∑ (ÅuTechnote 1153ÅFMRJ Ç©ÇÁï°êîÉXÉåÉbÉhÇ≈à¿ëSÇ…ÉcÅ[ÉãÉ{ÉbÉNÉXÇóòópÇ∑ÇÈï˚ñ@ÅvéQèΔ)ÅBÉÇÉjÉ^ÉLÉÉÉbÉVÉÖÇ… java.lang.Object
ǙdžÇÈèÍçáÅAǪÇÍÇÕǮǪÇÁÇ≠ public Ç» AWT ÉNÉâÉXÇ™égópÇ∑ÇÈ treeLock
(java.awt.Component
Ç≈êÈåæÇ≥ÇÍǃǢNjÇ∑) Ç≈ÅAÉRÉìÉ|Å[ÉlÉìÉgäKëwÇ÷ÇÃÉAÉNÉZÉXÇÃìØä˙ÇéÊÇÈÇÃÇ…égÇÌÇÍÇ‹Ç∑ÅBAWT ä÷òAÇÃÉfÉbÉhÉçÉbÉNÇÃå¥àˆÇÕëΩÇ≠ÇÃèÍçáDZÇà treeLock
Ç™å¥àˆÇ≈Ç∑ÅB
ìoò^çœÇ›ÉÇÉjÉ^ÇÃï\é¶
ÉXÉåÉbÉhï\é¶ÇÃç≈å„ÇÃïîï™ÇÕìoò^çœÇ›ÉÇÉjÉ^ÇÃàÍóóÇ≈Ç∑ÅBÉÇÉjÉ^Ç…ÇÕÇ«ÇÃÉIÉuÉWÉFÉNÉgDžLJäÑÇËìñǃÇÁÇÍǃÇÕǢǻǢǙÅAJVM Ç™îFímǵǃǢÇÈLJÇÃǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉÇÉjÉ^ÇÕÅAJITÅAÉNÉâÉXÉçÅ[É_ÅAfinalize ÉXÉåÉbÉhǻǫǙì‡ïîÇ≈égópǵNjÇ∑ÅBí èÌì«é“ÇÕDZÇÍÇà”éØÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBǵǩǵÇ≤Ç≠Ç‹ÇÍDžDZÇÍÇÁÇÃÉÇÉjÉ^Ç…ä÷ÇÌÇÈÉfÉbÉhÉçÉbÉNÇ™ãNDZÇÈèÍçáǙdžÇËÇ‹Ç∑ (ó·Ç¶ÇŒÅAÇÌÇÍÇÌÇÍÇÕ JIT ÇΔÉNÉâÉXÉçÅ[É_ÇÃä‘Ç≈ãNDZǡÇΩÉfÉbÉhÉçÉbÉNÇ…ÇÊÇÈÉoÉOÇ≈ãÍǵÇÒÇæåoå±Ç™Ç†ÇËÇ‹Ç∑)ÅBDZÇÍÇÁÇ…óçÇfiñ‚ëËÇ™ãNDZǡÇΩèÍçáÇÕÇ‹Ç∏ä‘à·Ç¢Ç»Ç≠ MRJ ÇÃÉoÉOÇ≈Ç∑ÇÃÇ≈ÅAstdlog
ÇΔ mrjlog
ÇìYïtǵǃÇ∑ÇÆÇ…ÉAÉbÉvÉãÇ…ïÒçêǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉRÉìÉeÉLÉXÉgÇÃêÿÇËë÷Ƕ
é¿çsíÜÇà MRJ ÉCÉìÉXÉ^ÉìÉXÇ™ 1 å¬ÇæÇØÇÃèÍçáÅAmrj dcmd
ÇÕé©ìÆìIDžǪÇÍÇå©Ç¬ÇØÇ‹Ç∑ÅBMacsBug Ç™ãNìÆÇ≥ÇÍÇΩèuä‘Ç…Ç«ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉAÉNÉeÉBÉuÇæÇ¡ÇΩǩǫǧǩÇÕä÷åWdžÇËÇ‹ÇπÇÒÅBǵǩǵìØéûÇ… 2 ǬÇà Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™é¿çsÇ≥ÇÍǃǢÇÈèÍçáÇÕÅAì«é“é©êgǙǪÇÍÇéwíËÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
MRJ ÇÃì¡íËÉCÉìÉXÉ^ÉìÉXÇéwíËÇ∑ÇÈÇ…ÇÕÅAǪÇà CFM ÉRÉìÉeÉLÉXÉg ID ÇímÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕ MacsBug ÇÃÅufrags
ÅvÉRÉ}ÉìÉhÇ≈ÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÃÉRÉ}ÉìÉhÇÃèoóÕÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃàÍóóÇé¶Ç∑LJÇÃÇ≈ÅAäeÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≤ÇΔÇ…óòópíÜÇÃÉâÉCÉuÉâÉäàÍóóÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBäeÉAÉvÉäÉPÅ[ÉVÉáÉìèÓïÒÇÃÉwÉbÉ_çsÇ…ÇÕǪÇÃÉRÉìÉeÉLÉXÉg ID Ç™ï\é¶Ç≥ÇÍǃǢNjÇ∑ (ID ÇÕ 10 êiï\é¶ÇÃÇΩÇflêÊì™Ç…Åu#ÅvÇ™ïtÇ´Ç‹Ç∑ÅBDZÇÃílÇÉ^ÉCÉvÇ∑ÇÈèÍçáÇÕDZÇÃ#ÇïtÇØñYÇÍǻǢÇ≈Ç≠ÇæÇ≥Ç¢)ÅB
ÉRÉìÉeÉLÉXÉgÇÃêÿÇËë÷Ƕ (mrj prf
ÉRÉìÉeÉLÉXÉg)
éwíËÇÃÉRÉìÉeÉLÉXÉgÇ≈é¿çsÇ≥ÇÍǃǢÇÈ MRJ ÉCÉìÉXÉ^ÉìÉXÇëIÇ—Ç‹Ç∑ÅBï ÇÃLJÇÃÇ…êÿÇËë÷ǶǻǢǩǨÇËÅADZÇÃå„Ç…é¿çsÇ≥ÇÍÇÈÉRÉ}ÉìÉhÇÕÇ∑Ç◊ǃDZÇà MRJ ÉCÉìÉXÉ^ÉìÉXÇ…ìKópÇ≥ÇÍÇ‹Ç∑ÅB
ÉRÉìÉeÉLÉXÉgÇÃï\é¶ (mrj pr
)
åªç›ëIëÇ≥ÇÍǃǢÇÈ CFM ÉRÉìÉeÉLÉXÉgǙdžÇÍnjǪÇÍÇï\é¶ÇµÇ‹Ç∑ÅB
éQçlï∂å£
- ÉAÉbÉvÉãÉRÉìÉsÉÖÅ[É^ÅwMacsBug Reference And Debugging GuideÅx1995
MacsBug ÇÃäÆëSÇ»ÉKÉCÉhÇ≈Ç∑ÅBÇÌÇ©ÇËÇ‚Ç∑Ç≠ÇÕdžÇËÇ‹ÇπÇÒÅBëÂó ÇÃÉlÉCÉeÉBÉuÉRÅ[ÉhÇÉfÉoÉbÉOÇ‚ÉeÉXÉgÇçsǧÇÃÇ≈ǻǢǩǨÇËÇÕïsóvÇ≈Ç∑ÅB
- Lindholm, Tim íòÅwThe Java Virtual Machine SpecificationÅxAddison-Wesley, 1996
JVM ÇÃìÆçÏå¥óùÇäÆëSÇ…é¶ÇµÇΩédólèëÇ≈Ç∑ÅBÉXÉåÉbÉhÇÃÇ”ÇÈNjǢDžǬǢǃê≥ämÇ…è⁄ç◊ÇímÇËÇΩÇ¢èÍçáÇÕDZÇÍÇì«ÇÒÇ≈Ç≠ÇæÇ≥Ç¢ÅB(ÉIÉuÉWÉFÉNÉgÇÃÉåÉCÉAÉEÉgÇ‚ÉXÉåÉbÉhÇÃÉXÉPÉWÉÖÅ[ÉäÉìÉOÇ…ä÷òAÇ∑ÇÈé¿ëïÇ≤ÇΔÇÃè⁄ç◊ÇÕèqÇ◊ÇÁÇÍǃǢNjÇπÇÒÅB)